classdef ProductionFunction < handle
% in the paper, different symbols are used. For the correspondence
% see tab_cal_prod_fun.R. Same as KrusellRobotsEach, but faster
% since no input parsing used here.
    properties
        alpha
        rho
        sigma
        kappa_M
        kappa_R
        kappa_C
        nu
        lambda
        mu
        eta_M
        eta_R
        eta_C
        upsilon
        A
        gamma
        scale_L
    end
    
    methods
        
        function self = ProductionFunction(par)
            self.alpha = par.alpha;
            self.rho = par.rho;
            self.sigma = par.sigma;
            self.kappa_M = par.kappa_M;
            self.kappa_R = par.kappa_R;
            self.kappa_C = par.kappa_C;
            self.nu = par.nu;
            self.lambda = par.lambda;
            self.mu = par.mu;
            self.eta_M = par.eta_M;
            self.eta_R = par.eta_R;
            self.eta_C = par.eta_C;
            self.upsilon = par.upsilon;
            self.A = par.A;
            self.gamma = par.gamma;
            self.scale_L = par.scale_L;
        end
        
        
        function out = Y(self,inp)
            out = inp.K_S.^self.alpha.*self.A.*((-1).*((-1)+self.mu).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^(((-1)+ ...
  self.rho).^(-1).*self.rho.*((-1)+self.sigma).*self.sigma.^(-1))+ ...
  self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((( ...
  -1)+self.sigma).*self.sigma.^(-1))).^((-1).*((-1)+self.alpha).*((-1)+ ...
  self.sigma).^(-1).*self.sigma);
        end
        
        
        function out = Y_M(self,inp)
            out = inp.K_S.^self.alpha.*self.A.*(1+(-1).*self.alpha).*self.eta_M.* ...
  self.mu.*self.upsilon.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1) ...
  .*self.kappa_M.^(-1)).*((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1)).*(((-1).*inp.K_B_M.^(((-1)+ ...
  self.kappa_M).*self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.* ...
  self.eta_M.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1).* ...
  self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(( ...
  -1).*self.nu.^(-1)).*(self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+ ...
  self.kappa_M).*self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.* ...
  self.eta_M.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1).* ...
  self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^((( ...
  -1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).* ...
  inp.K_B_R.^(((-1)+self.kappa_R).*self.kappa_R.^(-1)).*((-1)+ ...
  self.eta_R)+inp.L_R.*self.eta_R.*self.scale_L.*(inp.L_R.* ...
  self.scale_L).^((-1).*self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^( ...
  -1).*self.kappa_R)).^(((-1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu) ...
  .^(-1)).*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((-1) ...
  .*self.sigma.^(-1)).*((-1).*((-1)+self.mu).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^(((-1)+ ...
  self.rho).^(-1).*self.rho.*((-1)+self.sigma).*self.sigma.^(-1))+ ...
  self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((( ...
  -1)+self.sigma).*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+( ...
  -1).*self.alpha.*self.sigma));
            
        end
        
        
        function out = Y_R(self,inp)
            out = inp.K_S.^self.alpha.*self.A.*((-1)+self.alpha).*self.eta_R.*self.mu.*(( ...
  -1)+self.upsilon).*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1)).*((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1)).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(( ...
  -1).*self.nu.^(-1)).*(self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+ ...
  self.kappa_M).*self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.* ...
  self.eta_M.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1).* ...
  self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^((( ...
  -1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).* ...
  inp.K_B_R.^(((-1)+self.kappa_R).*self.kappa_R.^(-1)).*((-1)+ ...
  self.eta_R)+inp.L_R.*self.eta_R.*self.scale_L.*(inp.L_R.* ...
  self.scale_L).^((-1).*self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^( ...
  -1).*self.kappa_R)).^(((-1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu) ...
  .^(-1)).*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((-1) ...
  .*self.sigma.^(-1)).*((-1).*((-1)+self.mu).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^(((-1)+ ...
  self.rho).^(-1).*self.rho.*((-1)+self.sigma).*self.sigma.^(-1))+ ...
  self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((( ...
  -1)+self.sigma).*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+( ...
  -1).*self.alpha.*self.sigma));
        end
        
        
        function out = Y_C(self,inp)
            out = (-1).*inp.K_S.^self.alpha.*self.A.*((-1)+self.alpha).*self.eta_C.*(( ...
  -1)+self.lambda).*((-1)+self.mu).*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1)).*((-1).*inp.K_B_C.^(((-1) ...
  +self.kappa_C).*self.kappa_C.^(-1)).*((-1)+self.eta_C)+inp.L_C.* ...
  self.eta_C.*self.scale_L.*(inp.L_C.*self.scale_L).^((-1).* ...
  self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^(-1)).*(((-1).* ...
  inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^((-1).*self.rho.^(-1)).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^((self.rho+( ...
  -1).*self.sigma).*(self.sigma+(-1).*self.rho.*self.sigma).^(-1)).*(( ...
  -1).*((-1)+self.mu).*(inp.K_E.^(((-1)+self.rho).*self.rho.^(-1)).* ...
  self.lambda+(-1).*((-1)+self.lambda).*(((-1).*inp.K_B_C.^(((-1)+ ...
  self.kappa_C).*self.kappa_C.^(-1)).*((-1)+self.eta_C)+inp.L_C.* ...
  self.eta_C.*self.scale_L.*(inp.L_C.*self.scale_L).^((-1).* ...
  self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^(-1).*self.kappa_C)).^((( ...
  -1)+self.rho).*self.rho.^(-1))).^(((-1)+self.rho).^(-1).*self.rho.*(( ...
  -1)+self.sigma).*self.sigma.^(-1))+self.mu.*((self.upsilon.*(((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^(((-1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+ ...
  self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(((-1)+self.nu).* ...
  self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^(((-1)+self.sigma) ...
  .*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+(-1).*self.alpha.* ...
  self.sigma));
        end
        
        
        function out = Y_B_M(self,inp)
            out = inp.K_B_M.^((-1).*self.kappa_M.^(-1)).*inp.K_S.^self.alpha.*self.A.*( ...
  (-1)+self.alpha).*((-1)+self.eta_M).*self.mu.*self.upsilon.*((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1)).*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).* ...
  ((-1)+self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^((-1).*self.nu.^(-1)).*(self.upsilon.*(((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^(((-1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+ ...
  self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(((-1)+self.nu).* ...
  self.nu.^(-1))).^(((-1)+self.nu).^(-1)).*((self.upsilon.*(((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^(((-1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+ ...
  self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(((-1)+self.nu).* ...
  self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((-1).* ...
  self.sigma.^(-1)).*((-1).*((-1)+self.mu).*(inp.K_E.^(((-1)+self.rho) ...
  .*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*(((-1).* ...
  inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^(((-1)+ ...
  self.rho).^(-1).*self.rho.*((-1)+self.sigma).*self.sigma.^(-1))+ ...
  self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((( ...
  -1)+self.sigma).*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+( ...
  -1).*self.alpha.*self.sigma));
        end
        
        
        function out = Y_B_R(self,inp)
            out = (-1).*inp.K_B_R.^((-1).*self.kappa_R.^(-1)).*inp.K_S.^self.alpha.* ...
  self.A.*((-1)+self.alpha).*((-1)+self.eta_R).*self.mu.*((-1)+ ...
  self.upsilon).*((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1)).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(( ...
  -1).*self.nu.^(-1)).*(self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+ ...
  self.kappa_M).*self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.* ...
  self.eta_M.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1).* ...
  self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^((( ...
  -1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).* ...
  inp.K_B_R.^(((-1)+self.kappa_R).*self.kappa_R.^(-1)).*((-1)+ ...
  self.eta_R)+inp.L_R.*self.eta_R.*self.scale_L.*(inp.L_R.* ...
  self.scale_L).^((-1).*self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^( ...
  -1).*self.kappa_R)).^(((-1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu) ...
  .^(-1)).*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((-1) ...
  .*self.sigma.^(-1)).*((-1).*((-1)+self.mu).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^(((-1)+ ...
  self.rho).^(-1).*self.rho.*((-1)+self.sigma).*self.sigma.^(-1))+ ...
  self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^(((-1)+self.kappa_M).* ...
  self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.*self.eta_M.* ...
  self.scale_L.*(inp.L_M.*self.scale_L).^((-1).*self.kappa_M.^(-1))) ...
  .^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^(((-1)+self.nu).* ...
  self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+ ...
  self.kappa_R).*self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.* ...
  self.eta_R.*self.scale_L.*(inp.L_R.*self.scale_L).^((-1).* ...
  self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^((( ...
  -1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^((( ...
  -1)+self.sigma).*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+( ...
  -1).*self.alpha.*self.sigma));
        end
        
        
        function out = Y_B_C(self,inp)
            out = inp.K_B_C.^((-1).*self.kappa_C.^(-1)).*inp.K_S.^self.alpha.*self.A.*( ...
  (-1)+self.alpha).*((-1)+self.eta_C).*((-1)+self.lambda).*((-1)+ ...
  self.mu).*((-1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)) ...
  .*((-1)+self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1)).*(((-1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).* ...
  ((-1)+self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^((-1).*self.rho.^(-1)).*(inp.K_E.^(((-1)+ ...
  self.rho).*self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*((( ...
  -1).*inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^((self.rho+( ...
  -1).*self.sigma).*(self.sigma+(-1).*self.rho.*self.sigma).^(-1)).*(( ...
  -1).*((-1)+self.mu).*(inp.K_E.^(((-1)+self.rho).*self.rho.^(-1)).* ...
  self.lambda+(-1).*((-1)+self.lambda).*(((-1).*inp.K_B_C.^(((-1)+ ...
  self.kappa_C).*self.kappa_C.^(-1)).*((-1)+self.eta_C)+inp.L_C.* ...
  self.eta_C.*self.scale_L.*(inp.L_C.*self.scale_L).^((-1).* ...
  self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^(-1).*self.kappa_C)).^((( ...
  -1)+self.rho).*self.rho.^(-1))).^(((-1)+self.rho).^(-1).*self.rho.*(( ...
  -1)+self.sigma).*self.sigma.^(-1))+self.mu.*((self.upsilon.*(((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^(((-1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+ ...
  self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(((-1)+self.nu).* ...
  self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^(((-1)+self.sigma) ...
  .*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+(-1).*self.alpha.* ...
  self.sigma));
        end
        
        
        function out = Y_E(self,inp)
            out = inp.K_E.^((-1).*self.rho.^(-1)).*inp.K_S.^self.alpha.*self.A.*((-1)+ ...
  self.alpha).*self.lambda.*((-1)+self.mu).*(inp.K_E.^(((-1)+self.rho).* ...
  self.rho.^(-1)).*self.lambda+(-1).*((-1)+self.lambda).*(((-1).* ...
  inp.K_B_C.^(((-1)+self.kappa_C).*self.kappa_C.^(-1)).*((-1)+ ...
  self.eta_C)+inp.L_C.*self.eta_C.*self.scale_L.*(inp.L_C.* ...
  self.scale_L).^((-1).*self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^( ...
  -1).*self.kappa_C)).^(((-1)+self.rho).*self.rho.^(-1))).^((self.rho+( ...
  -1).*self.sigma).*(self.sigma+(-1).*self.rho.*self.sigma).^(-1)).*(( ...
  -1).*((-1)+self.mu).*(inp.K_E.^(((-1)+self.rho).*self.rho.^(-1)).* ...
  self.lambda+(-1).*((-1)+self.lambda).*(((-1).*inp.K_B_C.^(((-1)+ ...
  self.kappa_C).*self.kappa_C.^(-1)).*((-1)+self.eta_C)+inp.L_C.* ...
  self.eta_C.*self.scale_L.*(inp.L_C.*self.scale_L).^((-1).* ...
  self.kappa_C.^(-1))).^(((-1)+self.kappa_C).^(-1).*self.kappa_C)).^((( ...
  -1)+self.rho).*self.rho.^(-1))).^(((-1)+self.rho).^(-1).*self.rho.*(( ...
  -1)+self.sigma).*self.sigma.^(-1))+self.mu.*((self.upsilon.*(((-1).* ...
  inp.K_B_M.^(((-1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+ ...
  self.eta_M)+inp.L_M.*self.eta_M.*self.scale_L.*(inp.L_M.* ...
  self.scale_L).^((-1).*self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^( ...
  -1).*self.kappa_M)).^(((-1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+ ...
  self.upsilon).*(((-1).*inp.K_B_R.^(((-1)+self.kappa_R).* ...
  self.kappa_R.^(-1)).*((-1)+self.eta_R)+inp.L_R.*self.eta_R.* ...
  self.scale_L.*(inp.L_R.*self.scale_L).^((-1).*self.kappa_R.^(-1))) ...
  .^(((-1)+self.kappa_R).^(-1).*self.kappa_R)).^(((-1)+self.nu).* ...
  self.nu.^(-1))).^(((-1)+self.nu).^(-1).*self.nu)).^(((-1)+self.sigma) ...
  .*self.sigma.^(-1))).^(((-1)+self.sigma).^(-1).*(1+(-1).*self.alpha.* ...
  self.sigma));
        end
        
        
        function out = Y_S(self,inp)
            out = inp.K_S.^((-1)+self.alpha).*self.A.*self.alpha.*((-1).*((-1)+self.mu) ...
  .*(inp.K_E.^(((-1)+self.rho).*self.rho.^(-1)).*self.lambda+(-1).*(( ...
  -1)+self.lambda).*(((-1).*inp.K_B_C.^(((-1)+self.kappa_C).* ...
  self.kappa_C.^(-1)).*((-1)+self.eta_C)+inp.L_C.*self.eta_C.* ...
  self.scale_L.*(inp.L_C.*self.scale_L).^((-1).*self.kappa_C.^(-1))) ...
  .^(((-1)+self.kappa_C).^(-1).*self.kappa_C)).^(((-1)+self.rho).* ...
  self.rho.^(-1))).^(((-1)+self.rho).^(-1).*self.rho.*((-1)+self.sigma) ...
  .*self.sigma.^(-1))+self.mu.*((self.upsilon.*(((-1).*inp.K_B_M.^((( ...
  -1)+self.kappa_M).*self.kappa_M.^(-1)).*((-1)+self.eta_M)+inp.L_M.* ...
  self.eta_M.*self.scale_L.*(inp.L_M.*self.scale_L).^((-1).* ...
  self.kappa_M.^(-1))).^(((-1)+self.kappa_M).^(-1).*self.kappa_M)).^((( ...
  -1)+self.nu).*self.nu.^(-1))+(-1).*((-1)+self.upsilon).*(((-1).* ...
  inp.K_B_R.^(((-1)+self.kappa_R).*self.kappa_R.^(-1)).*((-1)+ ...
  self.eta_R)+inp.L_R.*self.eta_R.*self.scale_L.*(inp.L_R.* ...
  self.scale_L).^((-1).*self.kappa_R.^(-1))).^(((-1)+self.kappa_R).^( ...
  -1).*self.kappa_R)).^(((-1)+self.nu).*self.nu.^(-1))).^(((-1)+self.nu) ...
  .^(-1).*self.nu)).^(((-1)+self.sigma).*self.sigma.^(-1))).^((-1).*(( ...
  -1)+self.alpha).*((-1)+self.sigma).^(-1).*self.sigma);
        end
        
        
    end
end